<?php

namespace App\Helper;

use App\Models\System\Config;
use Illuminate\Support\Str;
use Illuminate\Support\Uri;

class Cdn
{
    /**
     * 获取CDN的URL
     * @param string $path 资源路径
     * @return Uri CDN完整URL
     * @throws \InvalidArgumentException 当CDN配置不存在时
     */
    public static function getUrl(string $path): Uri
    {
        // 如果路径已经是完整URL，则直接返回
        if (Str::startsWith($path, ['http://', 'https://'])) {
            return Uri::of($path);
        }

        // 获取CDN配置
        $cdn = Config::getValueByName('basic_cdn', request()->getHost());

        // 确保CDN地址以斜杠结尾
        $cdn = Str::finish($cdn, '/');

        // 移除路径开头的斜杠（如果有）
        $path = Str::ltrim($path, '/');

        // 组合CDN地址和路径
        return Uri::of($cdn . $path);
    }
}
